home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 August: Tool Chest / Dev.CD Aug 95 TC / Dev.CD Aug 95 TC.toast / Tool Chest / Interfaces / UniversalInterfaces 2.1B1 / AIncludes / MoviesFormat.a < prev    next >
Encoding:
Text File  |  1995-04-18  |  20.3 KB  |  555 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        MoviesFormat.a
  3. ;
  4. ;    Contains:    QuickTime Interfaces.
  5. ;
  6. ;    Version:    Technology:    QuickTime 2.0
  7. ;                Package:    Universal Interfaces 2.1ß1 in “MPW Prerelease” on ETO #17
  8. ;
  9. ;    Copyright:    © 1984-1995 by Apple Computer, Inc.
  10. ;                All rights reserved.
  11. ;
  12. ;    Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13. ;                stack.  Include the file and version information (from above)
  14. ;                in the problem description and send to:
  15. ;                    Internet:    apple.bugs@applelink.apple.com
  16. ;                    AppleLink:    APPLE.BUGS
  17. ;
  18. ;
  19.  
  20.     IF &TYPE('__MOVIESFORMAT__') = 'UNDEFINED' THEN
  21. __MOVIESFORMAT__ SET 1
  22.  
  23.  
  24.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  25.     include 'Types.a'
  26.     ENDIF
  27. ;        include 'ConditionalMacros.a'                                ;
  28.  
  29.     IF &TYPE('__WINDOWS__') = 'UNDEFINED' THEN
  30.     include 'Windows.a'
  31.     ENDIF
  32. ;        include 'Memory.a'                                            ;
  33. ;            include 'MixedMode.a'                                    ;
  34. ;        include 'Quickdraw.a'                                        ;
  35. ;            include 'QuickdrawText.a'                                ;
  36. ;        include 'Events.a'                                            ;
  37. ;            include 'OSUtils.a'                                    ;
  38. ;        include 'Controls.a'                                        ;
  39. ;            include 'Menus.a'                                        ;
  40.  
  41.     IF &TYPE('__IMAGECOMPRESSION__') = 'UNDEFINED' THEN
  42.     include 'ImageCompression.a'
  43.     ENDIF
  44. ;        include 'QDOffscreen.a'                                    ;
  45. ;            include 'Errors.a'                                        ;
  46. ;        include 'Components.a'                                        ;
  47. ;        include 'StandardFile.a'                                    ;
  48. ;            include 'Dialogs.a'                                    ;
  49. ;                include 'TextEdit.a'                                ;
  50. ;            include 'Files.a'                                        ;
  51.  
  52.     IF &TYPE('__MOVIES__') = 'UNDEFINED' THEN
  53.     include 'Movies.a'
  54.     ENDIF
  55. ;        include 'Aliases.a'                                        ;
  56. ;            include 'AppleTalk.a'                                    ;
  57.  
  58. kMovieVersion                    EQU        0                    ; version number of the format here described 
  59.  
  60. MoviesUserData             RECORD    0
  61. size                     ds.l   1        ; offset: $0 (0)        ; size of this user data 
  62. udType                     ds.l   1        ; offset: $4 (4)        ; type of user data 
  63. data                     ds.b   1        ; offset: $8 (8)        ; the user data 
  64.                          ORG 10
  65. sizeof                     EQU *            ; size:   $A (10)
  66.                         ENDR
  67.  
  68. ; typedef struct MoviesUserData  MoviesUserData
  69. UserDataAtom             RECORD    0
  70. size                     ds.l   1        ; offset: $0 (0)
  71. atomType                 ds.l   1        ; offset: $4 (4)
  72. userData                 ds     MoviesUserData ; offset: $8 (8)
  73. sizeof                     EQU *            ; size:   $12 (18)
  74.                         ENDR
  75.  
  76. ; typedef struct UserDataAtom  UserDataAtom
  77. ; MoviesDataDescription tells us where the data for the movie or track lives.
  78. ;   The data can follow the directory, be in the datafork of the same file as the directory resource,
  79. ;   be in the resource fork of the same file as the directory resource, be in another file in the
  80. ;   data fork or resource fork, or require a specific bottleneck to fetch the data. 
  81. ;***************************************
  82. ;*
  83. ;*   MediaDirectory information -
  84. ;*        The MediaDirectory is tightly coupled to the data.
  85. ;*
  86. ;***************************************
  87. SampleDescriptionAtom     RECORD    0
  88. size                     ds.l   1        ; offset: $0 (0)
  89. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stsd' 
  90. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  91. numEntries                 ds.l   1        ; offset: $C (12)
  92. sampleDescTable             ds     SampleDescription ; offset: $10 (16)
  93. sizeof                     EQU *            ; size:   $20 (32)
  94.                         ENDR
  95.  
  96. ; typedef struct SampleDescriptionAtom  SampleDescriptionAtom
  97. ; TimeToSampleNum maps physical sample time to physical sample number. 
  98. TimeToSampleNum         RECORD    0
  99. sampleCount                 ds.l   1        ; offset: $0 (0)
  100. sampleDuration             ds.l   1        ; offset: $4 (4)
  101. sizeof                     EQU *            ; size:   $8 (8)
  102.                         ENDR
  103.  
  104. ; typedef struct TimeToSampleNum  TimeToSampleNum
  105. TimeToSampleNumAtom     RECORD    0
  106. size                     ds.l   1        ; offset: $0 (0)
  107. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stts' 
  108. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  109. numEntries                 ds.l   1        ; offset: $C (12)
  110. timeToSampleNumTable     ds     TimeToSampleNum ; offset: $10 (16)
  111. sizeof                     EQU *            ; size:   $18 (24)
  112.                         ENDR
  113.  
  114. ; typedef struct TimeToSampleNumAtom  TimeToSampleNumAtom
  115. ; SyncSamples is a list of the physical samples which are self contained. 
  116. SyncSampleAtom             RECORD    0
  117. size                     ds.l   1        ; offset: $0 (0)
  118. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stss' 
  119. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  120. numEntries                 ds.l   1        ; offset: $C (12)
  121. syncSampleTable             ds.l   1        ; offset: $10 (16)
  122. sizeof                     EQU *            ; size:   $14 (20)
  123.                         ENDR
  124.  
  125. ; typedef struct SyncSampleAtom  SyncSampleAtom
  126. ; SampleToChunk maps physical sample number to chunk number. 
  127. ; same as SampleToChunk, but redundant first sample is removed 
  128. SampleToChunk             RECORD    0
  129. firstChunk                 ds.l   1        ; offset: $0 (0)
  130. samplesPerChunk             ds.l   1        ; offset: $4 (4)
  131. sampleDescriptionID         ds.l   1        ; offset: $8 (8)
  132. sizeof                     EQU *            ; size:   $C (12)
  133.                         ENDR
  134.  
  135. ; typedef struct SampleToChunk  SampleToChunk
  136. SampleToChunkAtom         RECORD    0
  137. size                     ds.l   1        ; offset: $0 (0)
  138. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stsc' 
  139. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  140. numEntries                 ds.l   1        ; offset: $C (12)
  141. sampleToChunkTable         ds     SampleToChunk ; offset: $10 (16)
  142. sizeof                     EQU *            ; size:   $1C (28)
  143.                         ENDR
  144.  
  145. ; typedef struct SampleToChunkAtom  SampleToChunkAtom
  146. ChunkOffsetAtom         RECORD    0
  147. size                     ds.l   1        ; offset: $0 (0)
  148. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stco' 
  149. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  150. numEntries                 ds.l   1        ; offset: $C (12)
  151. chunkOffsetTable         ds.l   1        ; offset: $10 (16)
  152. sizeof                     EQU *            ; size:   $14 (20)
  153.                         ENDR
  154.  
  155. ; typedef struct ChunkOffsetAtom  ChunkOffsetAtom
  156. SampleSizeAtom             RECORD    0
  157. size                     ds.l   1        ; offset: $0 (0)
  158. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stsz' 
  159. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  160. sampleSize                 ds.l   1        ; offset: $C (12)
  161. numEntries                 ds.l   1        ; offset: $10 (16)
  162. sampleSizeTable             ds.l   1        ; offset: $14 (20)
  163. sizeof                     EQU *            ; size:   $18 (24)
  164.                         ENDR
  165.  
  166. ; typedef struct SampleSizeAtom  SampleSizeAtom
  167. ShadowSync                 RECORD    0
  168. fdSampleNum                 ds.l   1        ; offset: $0 (0)
  169. syncSampleNum             ds.l   1        ; offset: $4 (4)
  170. sizeof                     EQU *            ; size:   $8 (8)
  171.                         ENDR
  172.  
  173. ; typedef struct ShadowSync  ShadowSync
  174. ShadowSyncAtom             RECORD    0
  175. size                     ds.l   1        ; offset: $0 (0)
  176. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stsz' 
  177. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  178. numEntries                 ds.l   1        ; offset: $C (12)
  179. shadowSyncTable             ds     ShadowSync ; offset: $10 (16)
  180. sizeof                     EQU *            ; size:   $18 (24)
  181.                         ENDR
  182.  
  183. ; typedef struct ShadowSyncAtom  ShadowSyncAtom
  184. SampleTableAtom         RECORD    0
  185. size                     ds.l   1        ; offset: $0 (0)
  186. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stbl' 
  187. sampleDescription         ds     SampleDescriptionAtom ; offset: $8 (8)
  188. timeToSampleNum             ds     TimeToSampleNumAtom ; offset: $28 (40)
  189. sampleToChunk             ds     SampleToChunkAtom ; offset: $40 (64)
  190. syncSample                 ds     SyncSampleAtom ; offset: $5C (92)
  191. sampleSize                 ds     SampleSizeAtom ; offset: $70 (112)
  192. chunkOffset                 ds     ChunkOffsetAtom ; offset: $88 (136)
  193. shadowSync                 ds     ShadowSyncAtom ; offset: $9C (156)
  194. sizeof                     EQU *            ; size:   $B4 (180)
  195.                         ENDR
  196.  
  197. ; typedef struct SampleTableAtom  SampleTableAtom
  198. PublicHandlerInfo         RECORD    0
  199. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  200. componentType             ds.l   1        ; offset: $4 (4)
  201. componentSubType         ds.l   1        ; offset: $8 (8)
  202. componentManufacturer     ds.l   1        ; offset: $C (12)
  203. componentFlags             ds.l   1        ; offset: $10 (16)
  204. componentFlagsMask         ds.l   1        ; offset: $14 (20)
  205. componentName             ds.b   1        ; offset: $18 (24)
  206.                          ORG 26
  207. sizeof                     EQU *            ; size:   $1A (26)
  208.                         ENDR
  209.  
  210. ; typedef struct PublicHandlerInfo  PublicHandlerInfo
  211. HandlerAtom             RECORD    0
  212. size                     ds.l   1        ; offset: $0 (0)
  213. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'hdlr' 
  214. hInfo                     ds     PublicHandlerInfo ; offset: $8 (8)
  215. sizeof                     EQU *            ; size:   $22 (34)
  216.                         ENDR
  217.  
  218. ; typedef struct HandlerAtom  HandlerAtom
  219. ; a data reference is a private structure 
  220. ; typedef long                 DataRefAtom
  221. DataInfoAtom             RECORD    0
  222. size                     ds.l   1        ; offset: $0 (0)
  223. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'dinf' 
  224. dataRef                     ds.l   1        ; offset: $8 (8)
  225. sizeof                     EQU *            ; size:   $C (12)
  226.                         ENDR
  227.  
  228. ; typedef struct DataInfoAtom  DataInfoAtom
  229. RgnAtom                 RECORD    0
  230. size                     ds.l   1        ; offset: $0 (0)
  231. atomType                 ds.l   1        ; offset: $4 (4)
  232. rgnSize                     ds.w   1        ; offset: $8 (8)
  233. rgnBBox                     ds     Rect    ; offset: $A (10)
  234. data                     ds.b   1        ; offset: $12 (18)
  235.                          ORG 20
  236. sizeof                     EQU *            ; size:   $14 (20)
  237.                         ENDR
  238.  
  239. ; typedef struct RgnAtom     RgnAtom
  240. MatteCompressedAtom     RECORD    0
  241. size                     ds.l   1        ; offset: $0 (0)
  242. atomType                 ds.l   1        ; offset: $4 (4)
  243. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  244. matteImageDescription     ds     ImageDescription ; offset: $C (12)
  245. matteData                 ds.b   1        ; offset: $62 (98)
  246.                          ORG 100
  247. sizeof                     EQU *            ; size:   $64 (100)
  248.                         ENDR
  249.  
  250. ; typedef struct MatteCompressedAtom  MatteCompressedAtom
  251. MatteAtom                 RECORD    0
  252. size                     ds.l   1        ; offset: $0 (0)
  253. atomType                 ds.l   1        ; offset: $4 (4)
  254. aCompressedMatte         ds     MatteCompressedAtom ; offset: $8 (8)
  255. sizeof                     EQU *            ; size:   $6C (108)
  256.                         ENDR
  257.  
  258. ; typedef struct MatteAtom     MatteAtom
  259. ClippingAtom             RECORD    0
  260. size                     ds.l   1        ; offset: $0 (0)
  261. atomType                 ds.l   1        ; offset: $4 (4)
  262. aRgnClip                 ds     RgnAtom    ; offset: $8 (8)
  263. sizeof                     EQU *            ; size:   $1C (28)
  264.                         ENDR
  265.  
  266. ; typedef struct ClippingAtom  ClippingAtom
  267. ;**********************
  268. ;* Media Info Example Structures
  269. ;**********************
  270. VideoMediaInfoHeader     RECORD    0
  271. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  272. graphicsMode             ds.w   1        ; offset: $4 (4)        ; for QD - transfer mode 
  273. opColorRed                 ds.w   1        ; offset: $6 (6)        ; opcolor for transfer mode 
  274. opColorGreen             ds.w   1        ; offset: $8 (8)
  275. opColorBlue                 ds.w   1        ; offset: $A (10)
  276. sizeof                     EQU *            ; size:   $C (12)
  277.                         ENDR
  278.  
  279. ; typedef struct VideoMediaInfoHeader  VideoMediaInfoHeader
  280. VideoMediaInfoHeaderAtom RECORD    0
  281. size                     ds.l   1        ; offset: $0 (0)        ; size of Media info 
  282. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'vmhd' 
  283. vmiHeader                 ds     VideoMediaInfoHeader ; offset: $8 (8)
  284. sizeof                     EQU *            ; size:   $14 (20)
  285.                         ENDR
  286.  
  287. ; typedef struct VideoMediaInfoHeaderAtom  VideoMediaInfoHeaderAtom
  288. VideoMediaInfo             RECORD    0
  289. size                     ds.l   1        ; offset: $0 (0)        ; size of Media info 
  290. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'minf' 
  291. header                     ds     VideoMediaInfoHeaderAtom ; offset: $8 (8)
  292. dataHandler                 ds     HandlerAtom ; offset: $1C (28)
  293. dataInfo                 ds     DataInfoAtom ; offset: $3E (62)
  294. sampleTable                 ds     SampleTableAtom ; offset: $4A (74)
  295. sizeof                     EQU *            ; size:   $FE (254)
  296.                         ENDR
  297.  
  298. ; typedef struct VideoMediaInfo  VideoMediaInfo
  299. SoundMediaInfoHeader     RECORD    0
  300. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  301. balance                     ds.w   1        ; offset: $4 (4)
  302. rsrvd                     ds.w   1        ; offset: $6 (6)
  303. sizeof                     EQU *            ; size:   $8 (8)
  304.                         ENDR
  305.  
  306. ; typedef struct SoundMediaInfoHeader  SoundMediaInfoHeader
  307. SoundMediaInfoHeaderAtom RECORD    0
  308. size                     ds.l   1        ; offset: $0 (0)        ; size of Media info 
  309. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'vmhd' 
  310. smiHeader                 ds     SoundMediaInfoHeader ; offset: $8 (8)
  311. sizeof                     EQU *            ; size:   $10 (16)
  312.                         ENDR
  313.  
  314. ; typedef struct SoundMediaInfoHeaderAtom  SoundMediaInfoHeaderAtom
  315. SoundMediaInfo             RECORD    0
  316. size                     ds.l   1        ; offset: $0 (0)        ; size of Media info 
  317. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'minf' 
  318. header                     ds     SoundMediaInfoHeaderAtom ; offset: $8 (8)
  319. dataHandler                 ds     HandlerAtom ; offset: $18 (24)
  320. dataReference             ds.l   1        ; offset: $3A (58)
  321. sampleTable                 ds     SampleTableAtom ; offset: $3E (62)
  322. sizeof                     EQU *            ; size:   $F2 (242)
  323.                         ENDR
  324.  
  325. ; typedef struct SoundMediaInfo  SoundMediaInfo
  326. ; whatever data the media handler needs goes after the atomType 
  327. MediaInfo                 RECORD    0
  328. size                     ds.l   1        ; offset: $0 (0)
  329. atomType                 ds.l   1        ; offset: $4 (4)
  330. sizeof                     EQU *            ; size:   $8 (8)
  331.                         ENDR
  332.  
  333. ; typedef struct MediaInfo     MediaInfo
  334. ;**********************
  335. ;* Media Directory Structures
  336. ;**********************
  337. MediaHeader             RECORD    0
  338. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  339. creationTime             ds.l   1        ; offset: $4 (4)        ; seconds since Jan 1904 when directory was created 
  340. modificationTime         ds.l   1        ; offset: $8 (8)        ; seconds since Jan 1904 when directory was appended 
  341. timeScale                 ds.l   1        ; offset: $C (12)        ; start time for Media (Media time) 
  342. duration                 ds.l   1        ; offset: $10 (16)        ; length of Media (Media time) 
  343. language                 ds.w   1        ; offset: $14 (20)
  344. quality                     ds.w   1        ; offset: $16 (22)
  345. sizeof                     EQU *            ; size:   $18 (24)
  346.                         ENDR
  347.  
  348. ; typedef struct MediaHeader  MediaHeader
  349. MediaHeaderAtom         RECORD    0
  350. size                     ds.l   1        ; offset: $0 (0)
  351. atomType                 ds.l   1        ; offset: $4 (4)
  352. header                     ds     MediaHeader ; offset: $8 (8)
  353. sizeof                     EQU *            ; size:   $20 (32)
  354.                         ENDR
  355.  
  356. ; typedef struct MediaHeaderAtom  MediaHeaderAtom
  357. MediaDirectory             RECORD    0
  358. size                     ds.l   1        ; offset: $0 (0)
  359. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'mdia' 
  360. mediaHeader                 ds     MediaHeaderAtom ; offset: $8 (8) ; standard Media information 
  361. mediaHandler             ds     HandlerAtom ; offset: $28 (40)
  362. mediaInfo                 ds     MediaInfo ; offset: $4A (74)
  363. sizeof                     EQU *            ; size:   $52 (82)
  364.                         ENDR
  365.  
  366. ; typedef struct MediaDirectory  MediaDirectory
  367. ;**********************
  368. ;* Track Structures
  369. ;**********************
  370.  
  371. TrackEnable                        EQU        1 << 0
  372. TrackInMovie                    EQU        1 << 1
  373. TrackInPreview                    EQU        1 << 2
  374. TrackInPoster                    EQU        1 << 3
  375.  
  376. TrackHeader             RECORD    0
  377. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  378. creationTime             ds.l   1        ; offset: $4 (4)        ; seconds since Jan 1904 when directory was created 
  379. modificationTime         ds.l   1        ; offset: $8 (8)        ; seconds since Jan 1904 when directory was appended 
  380. trackID                     ds.l   1        ; offset: $C (12)
  381. reserved1                 ds.l   1        ; offset: $10 (16)
  382. duration                 ds.l   1        ; offset: $14 (20)        ; length of track (track time) 
  383. reserved2                 ds.l   1        ; offset: $18 (24)
  384. reserved3                 ds.l   1        ; offset: $1C (28)
  385. layer                     ds.w   1        ; offset: $20 (32)
  386. alternateGroup             ds.w   1        ; offset: $22 (34)
  387. volume                     ds.w   1        ; offset: $24 (36)
  388. reserved4                 ds.w   1        ; offset: $26 (38)
  389. matrix                     ds     MatrixRecord ; offset: $28 (40)
  390. trackWidth                 ds.l   1        ; offset: $4C (76)
  391. trackHeight                 ds.l   1        ; offset: $50 (80)
  392. sizeof                     EQU *            ; size:   $54 (84)
  393.                         ENDR
  394.  
  395. ; typedef struct TrackHeader  TrackHeader
  396. TrackHeaderAtom         RECORD    0
  397. size                     ds.l   1        ; offset: $0 (0)        ; size of track header 
  398. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'tkhd' 
  399. header                     ds     TrackHeader ; offset: $8 (8)
  400. sizeof                     EQU *            ; size:   $5C (92)
  401.                         ENDR
  402.  
  403. ; typedef struct TrackHeaderAtom  TrackHeaderAtom
  404. EditListType             RECORD    0
  405. trackDuration             ds.l   1        ; offset: $0 (0)
  406. mediaTime                 ds.l   1        ; offset: $4 (4)
  407. mediaRate                 ds.l   1        ; offset: $8 (8)
  408. sizeof                     EQU *            ; size:   $C (12)
  409.                         ENDR
  410.  
  411. ; typedef struct EditListType  EditListType
  412. EditListAtom             RECORD    0
  413. size                     ds.l   1        ; offset: $0 (0)
  414. atomType                 ds.l   1        ; offset: $4 (4)        ; = elst 
  415. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  416. numEntries                 ds.l   1        ; offset: $C (12)
  417. editListTable             ds     EditListType ; offset: $10 (16)
  418. sizeof                     EQU *            ; size:   $1C (28)
  419.                         ENDR
  420.  
  421. ; typedef struct EditListAtom  EditListAtom
  422. EditsAtom                 RECORD    0
  423. size                     ds.l   1        ; offset: $0 (0)
  424. atomType                 ds.l   1        ; offset: $4 (4)        ; = edts 
  425. editList                 ds     EditListAtom ; offset: $8 (8)
  426. sizeof                     EQU *            ; size:   $24 (36)
  427.                         ENDR
  428.  
  429. ; typedef struct EditsAtom     EditsAtom
  430. TrackLoadSettings         RECORD    0
  431. preloadStartTime         ds.l   1        ; offset: $0 (0)
  432. preloadDuration             ds.l   1        ; offset: $4 (4)
  433. preloadFlags             ds.l   1        ; offset: $8 (8)
  434. defaultHints             ds.l   1        ; offset: $C (12)
  435. sizeof                     EQU *            ; size:   $10 (16)
  436.                         ENDR
  437.  
  438. ; typedef struct TrackLoadSettings  TrackLoadSettings
  439. TrackLoadSettingsAtom     RECORD    0
  440. size                     ds.l   1        ; offset: $0 (0)
  441. atomType                 ds.l   1        ; offset: $4 (4)        ; = load 
  442. settings                 ds     TrackLoadSettings ; offset: $8 (8)
  443. sizeof                     EQU *            ; size:   $18 (24)
  444.                         ENDR
  445.  
  446. ; typedef struct TrackLoadSettingsAtom  TrackLoadSettingsAtom
  447. TrackDirectory             RECORD    0
  448. size                     ds.l   1        ; offset: $0 (0)
  449. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'trak' 
  450. trackHeader                 ds     TrackHeaderAtom ; offset: $8 (8) ; standard track information 
  451. trackClip                 ds     ClippingAtom ; offset: $64 (100)
  452. edits                     ds     EditsAtom ; offset: $80 (128)
  453. media                     ds     MediaDirectory ; offset: $A4 (164)
  454. userData                 ds     UserDataAtom ; offset: $F6 (246) ; space for extending with new data types 
  455. sizeof                     EQU *            ; size:   $108 (264)
  456.                         ENDR
  457.  
  458. ; typedef struct TrackDirectory  TrackDirectory
  459. ;***************************************
  460. ;*
  461. ;*   MovieDirectory -
  462. ;*        The MovieDirectory is the top level structure which
  463. ;*        holds the TrackInstance describing where the
  464. ;*        TrackDirectories are.
  465. ;*
  466. ;***************************************
  467. MovieHeader             RECORD    0
  468. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  469. creationTime             ds.l   1        ; offset: $4 (4)        ; seconds since Jan 1904 when directory was created 
  470. modificationTime         ds.l   1        ; offset: $8 (8)        ; seconds since Jan 1904 when directory was appended 
  471. timeScale                 ds.l   1        ; offset: $C (12)        ; Time specifications 
  472. duration                 ds.l   1        ; offset: $10 (16)
  473. preferredRate             ds.l   1        ; offset: $14 (20)        ; rate at which to play this movie 
  474. preferredVolume             ds.w   1        ; offset: $18 (24)        ; volume to play movie at 
  475. reserved1                 ds.w   1        ; offset: $1A (26)
  476. preferredLong1             ds.l   1        ; offset: $1C (28)
  477. preferredLong2             ds.l   1        ; offset: $20 (32)
  478. matrix                     ds     MatrixRecord ; offset: $24 (36)
  479. previewTime                 ds.l   1        ; offset: $48 (72)        ; time in track the proxy begins (track time) 
  480. previewDuration             ds.l   1        ; offset: $4C (76)        ; how long the proxy lasts (track time) 
  481. posterTime                 ds.l   1        ; offset: $50 (80)        ; time in track the proxy begins (track time) 
  482. selectionTime             ds.l   1        ; offset: $54 (84)        ; time in track the proxy begins (track time) 
  483. selectionDuration         ds.l   1        ; offset: $58 (88)        ; time in track the proxy begins (track time) 
  484. currentTime                 ds.l   1        ; offset: $5C (92)        ; time in track the proxy begins (track time) 
  485. nextTrackID                 ds.l   1        ; offset: $60 (96)        ; next value to use for a TrackID 
  486. sizeof                     EQU *            ; size:   $64 (100)
  487.                         ENDR
  488.  
  489. ; typedef struct MovieHeader  MovieHeader
  490. MovieHeaderAtom         RECORD    0
  491. size                     ds.l   1        ; offset: $0 (0)
  492. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'mvhd' 
  493. header                     ds     MovieHeader ; offset: $8 (8)
  494. sizeof                     EQU *            ; size:   $6C (108)
  495.                         ENDR
  496.  
  497. ; typedef struct MovieHeaderAtom  MovieHeaderAtom
  498. MovieDirectory             RECORD    0
  499. size                     ds.l   1        ; offset: $0 (0)
  500. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'moov' 
  501. header                     ds     MovieHeaderAtom ; offset: $8 (8)
  502. movieClip                 ds     ClippingAtom ; offset: $74 (116)
  503. ; Track Directories 
  504. trackDirectory             ds     TrackDirectory ; offset: $90 (144) ; Track directory information 
  505. ; User data for Movie 
  506. userData                 ds     UserDataAtom ; offset: $198 (408) ; space for user extensions 
  507. sizeof                     EQU *            ; size:   $1AA (426)
  508.                         ENDR
  509.  
  510. ; typedef struct MovieDirectory  MovieDirectory
  511.  
  512. ; some system defined format IDs 
  513. MOVIE_TYPE                        EQU        'moov'
  514. TRACK_TYPE                        EQU        'trak'
  515. MEDIA_TYPE                        EQU        'mdia'
  516. VIDEO_TYPE                        EQU        'vide'
  517. SOUND_TYPE                        EQU        'soun'
  518.  
  519. ; atom id's 
  520. MovieAID                        EQU        'moov'
  521. MovieHeaderAID                    EQU        'mvhd'
  522. ClipAID                            EQU        'clip'
  523. RgnClipAID                        EQU        'crgn'
  524. MatteAID                        EQU        'matt'
  525. MatteCompAID                    EQU        'kmat'
  526. TrackAID                        EQU        'trak'
  527. UserDataAID                        EQU        'udta'
  528. TrackHeaderAID                    EQU        'tkhd'
  529. EditsAID                        EQU        'edts'
  530. EditListAID                        EQU        'elst'
  531. MediaAID                        EQU        'mdia'
  532. MediaHeaderAID                    EQU        'mdhd'
  533. MediaInfoAID                    EQU        'minf'
  534. VideoMediaInfoHeaderAID            EQU        'vmhd'
  535. SoundMediaInfoHeaderAID            EQU        'smhd'
  536. GenericMediaInfoHeaderAID        EQU        'gmhd'
  537. GenericMediaInfoAID                EQU        'gmin'
  538. DataInfoAID                        EQU        'dinf'
  539. DataRefAID                        EQU        'dref'
  540. SampleTableAID                    EQU        'stbl'
  541. STSampleDescAID                    EQU        'stsd'
  542. STTimeToSampAID                    EQU        'stts'
  543. STSyncSampleAID                    EQU        'stss'
  544. STSampleToChunkAID                EQU        'stsc'
  545. STShadowSyncAID                    EQU        'stsh'
  546. HandlerAID                        EQU        'hdlr'
  547. STSampleSizeAID                    EQU        'stsz'
  548. STChunkOffsetAID                EQU        'stco'
  549. DataRefContainerAID                EQU        'drfc'
  550. TrackReferenceAID                EQU        'tref'
  551. ColorTableAID                    EQU        'ctab'
  552. LoadSettingsAID                    EQU        'load'
  553.  
  554.     ENDIF ; __MOVIESFORMAT__
  555.